Raspberry Pi /RP2350 /SIO /TMDS_CTRL

Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text

Interpret as TMDS_CTRL

31 2827 2423 2019 1615 1211 87 43 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0L0_ROT0L1_ROT0L2_ROT0L0_NBITS 0L1_NBITS 0L2_NBITS 0 (INTERLEAVE)INTERLEAVE 0 (0)PIX_SHIFT 0 (PIX2_NOSHIFT)PIX2_NOSHIFT 0 (CLEAR_BALANCE)CLEAR_BALANCE

PIX_SHIFT=0

Description

Control register for TMDS encoder.

Fields

L0_ROT

Right-rotate the 16 LSBs of the colour accumulator by 0-15 bits, in order to get the MSB of the lane 0 (blue) colour data aligned with the MSB of the 8-bit encoder input.

For example, for RGB565 (red most significant), blue is bits 4:0, so should be right-rotated by 13 to align with bits 7:3 of the encoder input.

L1_ROT

Right-rotate the 16 LSBs of the colour accumulator by 0-15 bits, in order to get the MSB of the lane 1 (green) colour data aligned with the MSB of the 8-bit encoder input.

For example, for RGB565, green is bits 10:5, so should be right-rotated by 3 bits to align with bits 7:2 of the encoder input.

L2_ROT

Right-rotate the 16 LSBs of the colour accumulator by 0-15 bits, in order to get the MSB of the lane 2 (red) colour data aligned with the MSB of the 8-bit encoder input.

For example, for RGB565 (red most significant), red is bits 15:11, so should be right-rotated by 8 bits to align with bits 7:3 of the encoder input.

L0_NBITS

Number of valid colour MSBs for lane 0 (1-8 bits, encoded as 0 through 7). Remaining LSBs are masked to 0 after the rotate.

L1_NBITS

Number of valid colour MSBs for lane 1 (1-8 bits, encoded as 0 through 7). Remaining LSBs are masked to 0 after the rotate.

L2_NBITS

Number of valid colour MSBs for lane 2 (1-8 bits, encoded as 0 through 7). Remaining LSBs are masked to 0 after the rotate.

INTERLEAVE

Enable lane interleaving for reads of PEEK_SINGLE/POP_SINGLE.

When interleaving is disabled, each of the 3 symbols appears as a contiguous 10-bit field, with lane 0 being the least-significant and starting at bit 0 of the register.

When interleaving is enabled, the symbols are packed into 5 chunks of 3 lanes times 2 bits (30 bits total). Each chunk contains two bits of a TMDS symbol per lane, with lane 0 being the least significant.

PIX_SHIFT

Shift applied to the colour data register with each read of a POP alias register.

Reading from the POP_SINGLE register, or reading from the POP_DOUBLE register with PIX2_NOSHIFT set (for pixel doubling), shifts by the indicated amount.

Reading from a POP_DOUBLE register when PIX2_NOSHIFT is clear will shift by double the indicated amount. (Shift by 32 means no shift.)

0 (0): Do not shift the colour data register.

1 (1): Shift the colour data register by 1 bit

2 (2): Shift the colour data register by 2 bits

3 (4): Shift the colour data register by 4 bits

4 (8): Shift the colour data register by 8 bits

5 (16): Shift the colour data register by 16 bits

PIX2_NOSHIFT

When encoding two pixels’s worth of symbols in one cycle (a read of a PEEK/POP_DOUBLE register), the second encoder sees a shifted version of the colour data register.

This control disables that shift, so that both encoder layers see the same pixel data. This is used for pixel doubling.

CLEAR_BALANCE

Clear the running DC balance state of the TMDS encoders. This bit should be written once at the beginning of each scanline.

Links

() ()